#include "cola.h"


void crear_cola(t_cola *pc)
{
    pc->pri = pc->ult = NULL;
}

int cola_llena(const t_cola *pc)
{
    t_nodo *pn = (t_nodo*)malloc(sizeof(t_nodo));
    if(!pn)
        return 1;
    free(pn);
    return 0;
}

int cola_vacia(const t_cola *pc)
{
    if(!(pc->ult) || !(pc->pri))
        return 1;
    return 0;
}

int poner_en_cola(t_cola *pc,const t_etiqueta *dato)
{
    t_nodo *pn = (t_nodo*)malloc(sizeof(t_nodo));
    if(!pn)
        return 0;
    pn->et = *dato;
    pn->sig = NULL;

    if(!(pc->ult) || !(pc->pri))
    {
        pc->ult = pc->pri = pn;
        return 1;
    }
    pc->ult->sig = pn;
    pc->ult = pn;
    return 1;
}

int sacar_de_cola(t_cola *pc,t_etiqueta *dato)
{
    if(!(pc->ult) || !(pc->pri))
        return 0;
    t_nodo *pn = pc->pri;
    *dato = pc->pri->et;
    pc->pri = pc->pri->sig;
    free(pn);
    return 1;
}

int obtener_frente(const t_cola *pc,t_etiqueta *dato)
{
    if(!(pc->ult) || !(pc->pri))
        return 0;
    *dato = pc->pri->et;
    return 1;
}
int obtener_cola(const t_cola *pc,t_etiqueta *dato)
{
    if(!(pc->ult) || !(pc->pri))
        return 0;
    *dato = pc->ult->et;
    return 1;
}

void vaciar_cola(t_cola *pc)
{
    t_nodo *pn;
    while(pc->pri)
    {
        pn = pc->pri;
        pc->pri = pc->pri->sig;
        free(pn);
    }
    pc->ult = NULL;
}
